const b = Symbol("b");
const obj = {
  a: 100,
  [b]: 200, // 即便 `enumerable: true` 也无法 `for...in`
  c: "c",
};
obj.__proto__.func = function () {};
Object.defineProperty(obj, "c", {
  enumerable: false, // 不可枚举
});

// for in 遍历对象自身和继承的可枚举属性，包括原型链上的
for (const key in obj) {
  console.log("all ", key); // a, func
  if (obj.hasOwnProperty(key)) {
    console.log("hasOwnProperty ", key); // a
  }
}
